package dao;

import gestores.GestorBD;

import java.sql.ResultSet;
import componentes.Competencia;


public class DAO_Competencia {

	
	private static DAO_Competencia INSTANCE = null;

	
	
	 /**
    * constructor
    */
   private DAO_Competencia() {
		
	}
   
   
   /**
    *  Metodo para obtener una instancia, si existe la devuelve, sino la crea
    * @return instancia si existe
    */
   public static DAO_Competencia getInstance(){
		if (INSTANCE == null) { 
           INSTANCE = new DAO_Competencia();
      
           
       }
		return INSTANCE;
   }
	
		
	/**
	 * METODOS NECESARIOS:
	 * 
	 * pasado un nombre por parametro, decir si existe en BD o no. 
	 * pasado un deporte por parametro, devolver los lugar asociados.
	 * crear una competencia, parametros:
	 * guardar una competencia
	 * buscarCompentecia por nombre pasado por parametro.
	 * @return 
	 * 
	 */
	public ResultSet validarNombre(String nombre){
		return GestorBD.getInstance().ejecutar("SELECT `nombre` FROM `competencia` WHERE `competencia`.`nombre`= " + "'" + nombre + "'" + "AND `competencia`.`eliminada`='0'");		
		
	}


	
	//Metodo que elimina el fixture de la competencia pasada como parametro
	public void eliminarFixture(Competencia competencia) {
		 //GestorBD.getInstance().actualizar("asf");
	}

	/**Guarda una competencia en la BD
	 * @param: competencia
	 * @return 
	 * */
	
	public void guardarCompetencia(Competencia comp, int id_deporte) {
		
		GestorBD.getInstance().actualizar("INSERT INTO `competencias`.`puntuacion` (`id_puntuacion`, `tipo_puntuacion`, `cant_sets`, `eliminada`)" +
				" VALUES ('" + comp.getId_competencia() +"', '"+ comp.getModalidad().getPuntuacion().getTipo()+"', "+ comp.getCantDeSets()+", '0')");
		
		GestorBD.getInstance().actualizar("INSERT INTO  `competencias`.`modalidad` (`id_modalidad` ,`tipo_modalidad` ," +
				"`id_puntuacion` ,`empate` ,`ptos_por_empate` ,`ptos_por_presentarse` ,`goles_a_favor` ,`ptos_por_ganar` ,`eliminada`)" +
				"VALUES ('"+ comp.getId_competencia() +"',  '"+ comp.getModalidad().getTipo() +"',  '"+ 
				comp.getId_competencia() +"',  '"+ comp.getEmpate() +"',  '"+ comp.getPuntosEmpate()+"',  '"+ comp.getPuntosPorPresentarse()+"',  '"+comp.getGolesAfavor()+"',  '"+comp.getPuntosPorPartidoGanado()+"',  '0')");
		
		
		GestorBD.getInstance().actualizar("INSERT INTO `competencias`.`competencia` " +
				"(`id_competencia`, `nombre`, `fecha_baja`, `hora_baja`, `reglamento`, `id_deporte`, `id_usuario`, " +
				"`id_modalidad`, `estado`, `eliminada`) " +
				
				"VALUES ('"+comp.getId_competencia()+"', '"+comp.getNombre()+"', NULL, NULL, '"+comp.getReglamento()+"', '"+ id_deporte +"', '"+comp.getId_usuario()+"', " +
				"'"+comp.getId_competencia()+"', 'Creada', '0')");
		
	}
	

	public ResultSet buscarCompetencia(String nombre, String modalidad,	String deporte, String estado, String id_usuario){
		return GestorBD.getInstance().ejecutar("SELECT `competencia`.`nombre`, `deporte`.`nombreDeporte`, `modalidad`.`tipo_modalidad`, `competencia`.`estado` FROM `competencia`, `deporte`, `modalidad` WHERE "  + nombre  + "AND " + estado + " AND " + deporte + "AND "+ modalidad + "AND `competencia`.`id_usuario`="+ "'" + id_usuario + "'"+ "AND `competencia`.`id_modalidad`=`modalidad`.`id_modalidad` AND `competencia`.`id_deporte`=`deporte`.`id_deporte`" +"AND `competencia`.`eliminada`='0'");
	}
	
	public ResultSet buscarModalidad(String id_modalidad){
		return GestorBD.getInstance().ejecutar("SELECT `tipo_modalidad` FROM `modalidad` WHERE `modalidad`.`id_modalidad`= "+ "'"+id_modalidad+ "'"  );
	}


	//actualiza la competencia en la BD con los cambios hechos
	public void actualizarCompetencia(Competencia competencia) {
		
		
	}
	
	public ResultSet actualizarEstado(String estado) {
		return null;
		//GestorBD.getInstance().ejecutar("UPDATE `competencia` SET `id_competencia`=[value-1],`nombre`=[value-2],`fecha_baja`=[value-3],`hora_baja`=[value-4],`reglamento`=[value-5],`id_deporte`=[value-6],`id_usuario`=[value-7],`id_modalidad`=[value-8],`estado`=[value-9],`eliminada`=[value-10] WHERE 1");
	}


	public ResultSet buscarcompetencias(String nombre){
		return GestorBD.getInstance().ejecutar("SELECT * FROM `competencia`, `deporte`, `modalidad`, `puntuacion`, `lugar` ,`deporte_lugar` WHERE `competencia`.`nombre`="+ "'"+ nombre + "'" + 
												" AND `competencia`.`eliminada`='0' AND `modalidad`.`id_modalidad`=`competencia`.`id_competencia` AND `puntuacion`.`id_puntuacion`=`competencia`.`id_competencia` AND `competencia`.`eliminada` = '0' AND `modalidad`.`eliminada` = '0' AND `competencia`.`id_deporte` = `deporte`.`id_deporte` AND `deporte`.`eliminada` = '0' AND `puntuacion`.`eliminada` = '0' AND `deporte`.`id_deporte` = `deporte_lugar`.`id_deporte`");
	}


	public ResultSet buscarDatosCompetencia(String id_competencia) {
		return GestorBD.getInstance().ejecutar("SELECT * FROM `deporte`, `modalidad`, `puntuacion` ,`lugar_competencia` WHERE" +
				"`modalidad`.`id_modalidad`=" +"'"+id_competencia+"'"+ " AND `puntuacion`.`id_puntuacion`=" +"'"+id_competencia+"'" + "AND `lugar_competencia`.`id_competencia`="+"'"+id_competencia+"'");
	}
}


















